//去字符串前后空格
if(!String.prototype.trim){
	String.prototype.trim = function(){
		this.replace(/(^\s*)|(\s*$)/g, "");
	}
}

//阻止冒泡行为
function stopBubbing(e){
	if(event.stopPropagation){
		e.stopPropagation();
	}else{
		e.cancelBubble = true;	//iE678
	}
};

//阻止浏览器默认事件
function stopDefault(e){
	if(event.preventDefault){
		return e.preventDefault();
	}else{
		e.returnValue = false;	//iE678
	}
};

//置顶
function goTop(){
	$(window).scrollTop("0");
};

function goTop1(){
	$("body").animate({"scrollTop":0});
};

//返回当前时间与1970的毫秒数
function getTimeString(){
	return new Date().getTime();
};

//按回车时光标切换到Id密码框
function enterNext(id,e){
	var ev = e.event || window.event;
	if(ev.keyCode == 13){
		document.getElementById(id).focus();
	}
};
//按回车时模拟点击Id所在的dom对象
function enterLogin(id,e){
	var ev = e.event || window.event;
	if(ev.keyCode == 13){
		document.getElementById(id).click();
	}
};


//图片等比例缩放适应预览框的参数初始化
/*
 * @parm: maxWidth:容器最大宽度
 * 				maxHeight：容器最大高度
 * 				width：图片的真实宽度
 * 				height：图片的真实高度
 * */
function clacImgZoomParam( maxWidth, maxHeight, width, height ){
  var param = {top:0, left:0, width:width, height:height};
  if( width>maxWidth || height>maxHeight )
  {
      rateWidth = width / maxWidth;
      rateHeight = height / maxHeight;
       
      if( rateWidth > rateHeight )
      {
          param.width =  maxWidth;
          param.height = Math.round(height / rateWidth);
      }else
      {
          param.width = Math.round(width / rateHeight);
          param.height = maxHeight;
      }
  }
  param.left = Math.round((maxWidth - param.width) / 2);
  param.top = Math.round((maxHeight - param.height) / 2);
  return param;
};

//图片等比例缩放适应预览框的参数初始化
/*
 * @parm: maxWidth:容器最大宽度
 * 				maxHeight：容器最大高度
 * 				width：图片的真实宽度
 * 				height：图片的真实高度
 * */
function adapterImgSize(maxWidth, maxHeight, width, height){
	var param = {top:0, left:0, width:width, height:height};
  if( width>maxWidth || height>maxHeight )
  {
      rateWidth = width / maxWidth;
      rateHeight = height / maxHeight;
       
      if( rateWidth > rateHeight )
      {
          param.width =  maxWidth;
          param.height = Math.round(height / rateWidth);
      }else
      {
          param.width = Math.round(width / rateHeight);
          param.height = maxHeight;
      }
  }
  param.left = Math.round((maxWidth - param.width) / 2);
  param.top = Math.round((maxHeight - param.height) / 2);
  return param;
};


/*
 * @parm:src：图片路径
 * 			cb：获取完成后的回调函数
 * 			islocal:是否使用filter的IE89图片路径
 * 
 * 根据图片路径，获取图片尺寸，网络图片
 * */
function getImgSizes(src,cb,islocal){
	if(!src)return;
	if(!islocal){
		setTimeout(function(){
			var w=0,h=0;
			var idstap = "max_del"+new Date().getTime();
			var max_del = document.getElementById(idstap);
			if(max_del){
				document.body.removeChild(max_del);
			}
			var div = document.createElement("div");
			div.id = idstap;
			div.style.display = "none";
			document.body.appendChild(div);
			var tempImg = document.createElement("img");
			div.appendChild(tempImg);
			
			if(typeof document.onload == "undefined"){//不支持onload事件
		 		tempImg.onreadystatechange = function(){
		 			if(this.readyState == "complete"){
		 				var img = new Image();
						img.src = src;
						w = img.width;
						h = img.height;
		 				cb&&cb(w,h);
		 				if(document.getElementById(idstap)){
							document.body.removeChild(document.getElementById(idstap));
						}
		 			}else{
		 				if(document.getElementById(idstap)){
							document.body.removeChild(document.getElementById(idstap));
						}
		 			}
		 		}
		 	}else{//支持onload事件
		 		tempImg.onload = function(){
					if(tempImg.naturalWidth){
						w = tempImg.naturalWidth;
						h = tempImg.naturalHeight;
						cb&&cb(w,h);
					}else{
						var img = new Image();
						img.src = src;
						w = img.width;
						h = img.height;
						cb&&cb(w,h);
					}
					if(document.getElementById(idstap)){
						document.body.removeChild(document.getElementById(idstap));
					}
				}
		 		tempImg.onerror = function(){
		 			if(document.getElementById(idstap)){
						document.body.removeChild(document.getElementById(idstap));
					}
		 		}
		 	}
		 	tempImg.src = src;
	 	},30);
	}else{
		checkPhoto(src,cb);	
	} 	
};


/**
 * 获取本地图片的真实大小，主要兼容IE89的图片预览
 * @param src 为本机图片路径，不能为带“http://”的图片
 * @returns {width:w,height:h}
 */
function checkPhoto(src,cb){
	var tempDiv=document.createElement("div");
  document.body.appendChild(tempDiv);
  tempDiv.style.width="10px";
  tempDiv.style.height="10px";
  tempDiv.style.diplay="none";
  tempDiv.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);";
  tempDiv.ID="previewTemp";
  //var url=picpreview.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src;
  tempDiv.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src=src;
  w=tempDiv.offsetWidth;
  h=tempDiv.offsetHeight;
  document.body.removeChild(tempDiv);
  cb&&cb(w,h);
  return {width:w,height:h};
};

/**
 * 获取本地上传图片的真实大小 
 * @param img为存在的dom对象  
 * @param callback 回调函数
 */ 
function getImgNaturalDimensions(img, callback) {
	if(img.src){
		getImgSizes(img.src,callback);
	}else{
		callback&&callback("无图片路径");
	}
};

//IE9获取子节点，不含注释，文本等
function getChildNodes(childNodes){
	var childNodesArr = [];
	for (var i=0;i<childNodes.length;i++) {
		if(childNodes[i].nodeType == "1"){
			childNodesArr.push(childNodes[i]);
		}
	}
	return childNodesArr;
}

//获取cookie
/*
 cookieName是存储cookie的key值
*/  
function getCookie(cookieName){  
	var cookieValue = document.cookie;
	var cookieStartAt = cookieValue.indexOf(cookieName+"=");  
	if(cookieStartAt==-1){  
		return null;
	}else{  
		cookieStartAt = cookieValue.indexOf("=",cookieStartAt)+1;  
		cookieEndAt = cookieValue.indexOf(";",cookieStartAt);  
		if(cookieEndAt==-1){  
			cookieEndAt = cookieValue.length;  
		}  
		cookieValue = unescape(cookieValue.substring(cookieStartAt,cookieEndAt));//解码latin-1
	}  
	return cookieValue;  
};
//设置cookie
/*
cookieName:存储的cookie的key值
cookieValue：存储的value值
cookieExpires：cookie过期是时间,单位ms,默认1个月
cookiePath：存储存储路径
*/
function setCookie(cookieName,cookieValue,cookieExpires,cookiePath){
	cookieValue = escape(cookieValue);//编码latin-1
	if(cookieExpires == "" || cookieExpires == undefined){
		var nowDate = new Date();
		nowDate.setMonth(nowDate.getMonth()+1);
		cookieExpires = nowDate.toGMTString();
		cookieValue += ";expires="+cookieExpires;
	}else{
		var nowDate = new Date();
		var newDate = new Date(nowDate.getTime() + cookieExpires);
		cookieExpires = newDate.toGMTString();
		cookieValue += ";expires="+cookieExpires;
	}
	if(!cookiePath){
		cookieValue +=";Path=/"+cookiePath;
	}
	document.cookie = cookieName+"="+cookieValue;
};

//id1在id2中居中显示，id1和id2已经添加position才起效果
function $center(id1,id2){
	var obj1 = document.getElementById(id1);
	var obj2 = document.getElementById(id2);
	var w1 = obj1.clientWidth;
	var h1 = obj1.clientHeight;
	var w2 = obj2.clientWidth;
	var h2 = obj2.clientHeight;
	var l = (w2 - w1) / 2;
	var t = (h2 - h1) / 2;
	obj2.style.marginTop = t+"px";
	obj2.style.marginLeft = l+"px";
};

//获取当天时间
//格式为 ：2017-6-12
function getYMD() {
	var toDate = new Date();
	var y = toDate.getFullYear();
	var m = toDate.getMonth() + 1;
	var d = toDate.getDate();
	return y + "-" + m + "-" + d;;
};

/*
 * 获取浏览器版本
 * */
function getBrowerType(){
	var type ="";
	var userMananer = (navigator.userAgent).toUpperCase();
	if(userMananer.indexOf("MSIE 6") > -1 ){
		type = "IE6";
	}else if(userMananer.indexOf("MSIE 7") > -1 ){
		type = "IE7";
	}else if(userMananer.indexOf("MSIE 8") > -1 ){
		type = "IE8";
	}else if(userMananer.indexOf("MSIE 9") > -1 ){
		type = "IE9";
	}else if(userMananer.indexOf("MSIE 10") > -1 ){
		type = "IE10";
	}else if(userMananer.indexOf("TRIDENT") > -1 && userMananer.indexOf("RV") >-1 ){
		type = "IE11";
	}else if(userMananer.indexOf("CHROME") > -1 ){
		type = "Chrome";
	}else if(userMananer.indexOf("FIREFOX") > -1 ){
		type = "Firefox";
	}else if(userMananer.indexOf("OPERA") > -1 ){
		type = "Opera";
	}else{
		type = "other";
	}
	return type;
};


//移动终端检查浏览器的引擎内核
//browser.versions
var browser={
  versions:function(){
  var u = window.navigator.userAgent;
  return {
      trident: u.indexOf('Trident') > -1, //IE内核
      presto: u.indexOf('Presto') > -1, //opera内核
      webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
      gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
      mobile: !!u.match(/AppleWebKit.*Mobile.*/)||!!u.match(/AppleWebKit/), //是否为移动终端
      ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
      android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
      iPhone: u.indexOf('iPhone') > -1 || u.indexOf('Mac') > -1, //是否为iPhone或者安卓QQ浏览器
      iPad: u.indexOf('iPad') > -1, //是否为iPad
      webApp: u.indexOf('Safari') == -1 ,//是否为web应用程序，没有头部与底部
      weixin: u.indexOf('MicroMessenger') == -1 //是否为微信浏览器
	};
  }()
};

//获取dom对象距离浏览器顶部的距离
function getTop(obj){
	var ctop =0;
	while(obj){
		ctop += obj.offsetTop;
		obj = obj.offsetParent;
	}
	return ctop;
}
//获取dom对象距离浏览器左边的距离
function getLeft(obj){
	var cleft =0;
	while(obj){
		cleft += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	return cleft;
};


// 根据tagName获取dom元素的对应的父节点，成功则返回该节点，否则返回undefined
function getParentNode(ele, tagName) {
				
	var parObj = ele.parentNode;
	
	tagName = tagName.toUpperCase();
	while(parObj.tagName !=  tagName && parObj != document){
		parObj = parObj.parentNode;
	}
	return parObj == document ? undefined : parObj;
}

//图片在父元素中自适应（父元素需定义大小）
function imgInit(){
	var imgs = document.getElementsByTagName("img");
	var i = 0;
	var timer = setInterval(function(){
		var obj = imgs[i];
		var src = obj.src;
		var maxW = obj.parentNode.clientWidth;
		var maxH = obj.parentNode.clientHeight;
		getImgSizes(src,function(w,h){
			var imgParm = adapterImgSize(maxW,maxH,w,h);
			obj.style.width = imgParm.width+"px";
			obj.style.height = imgParm.height+"px";
			obj.style.marginLeft = imgParm.left+"px";
			obj.style.marginTop = imgParm.top+"px";
			i++;
			if(i>=(imgs.length - 1)){
				clearInterval(timer);
			}
		});
	},100);
};

/*
 * 图片自调整，适应父窗口
 * @parm: dom为dom对象
 * 				有参数时，自对dom节点下的img做自适应操作；
 * 比imgInit()方法更快，不用定时器遍历，采用递归遍历所有图片
 * */
function imgAdapt(dom){
	var imgs;
	if(dom){
		imgs = dom.getElementsByTagName("img");
	}else{
		imgs = document.getElementsByTagName("img")
	}
	var i = 0;
	var len = imgs.length;
	if(len){
		imgAda(i);
	}
	function imgAda(index){
		if(i>len-1){
			return;
		};
		var src = obj.src;
		var maxW = obj.parentNode.clientWidth;
		var maxH = obj.parentNode.clientHeight;
		//获取图片的真实大小
		getImgSizes(src,function(w,h){
			//初始化图片显示的参数
			var imgParm = adapterImgSize(maxW,maxH,w,h);
			//初始化图片位置
			var imgParm = adapterImgSize(maxW,maxH,w,h);
			obj.style.width = imgParm.width+"px";
			obj.style.height = imgParm.height+"px";
			obj.style.marginLeft = imgParm.left+"px";
			obj.style.marginTop = imgParm.top+"px";
			//i++;
			//imgAda(i);
		});
		i++;
		imgAda(i);
	};
};

//获取地址栏中的参数
function getLocalParm(){
	var urlParm = location.search ;
	var request = {};
	if(urlParm.indexOf("?") != -1){
		var str = urlParm.substr(1);
		if(str.indexOf("&") != -1){
			var strs = str.split("&");
			for(var i=0,len=strs.length;i<len;i++){
				request[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
			};
		}else{
			request[str.split("=")[0]] = unescape(str.split("=")[1]);
		}
	};
	return request;
};

//获取指定url或地址栏中的参数的对象
function getUrlParm(url){
	var urlParm = url || location.href ;
	var request = {};
	if(urlParm.indexOf("?") > -1){
		var urlArr = urlParm.split('?');
		request.http = urlArr[0];
		var str = urlArr[1];
		request.parm = {};
		if(str.indexOf("&") != -1){
			var strs = str.split("&");
			for(var i=0,len=strs.length;i<len;i++){
				request.parm[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
			};
		}else{
			request.parm[str.split("=")[0]] = unescape(str.split("=")[1]);
		}
	}else{
		request.http = urlParm;
	};
	return request;
};
//图片在父窗口中自适应居中
//@parm:dom非必选，有dom时，指dom下的图片在父窗口自适应居中。否则，document下的所有图片
//<img _src="" />

function initImgAdap(dom){
	var imgs ;
	if(dom){
		imgs = dom.getElementsByTagName("img");
	}else{
		imgs = document.getElementsByTagName("img");
	}
	var i = 0;
	var len = imgs.length;
	if(len){
		imgAda(i);
	}
	function imgAda(index){
		if(i>len-1){
			return;
		};
		var obj = imgs[index];
		var src = obj.getAttribute("_src");
		var maxW = obj.parentNode.clientWidth;
		var maxH = obj.parentNode.clientHeight;
		//获取图片的真实大小
		getImgSizes(src,function(w,h){
			//初始化图片显示的参数
			var imgParm = adapterImgSize(maxW,maxH,w,h);
			//初始化图片位置
			var imgParm = adapterImgSize(maxW,maxH,w,h);
			obj.src = src;
			obj.style.width = imgParm.width+"px";
			obj.style.height = imgParm.height+"px";
			obj.style.marginLeft = imgParm.left+"px";
			obj.style.marginTop = imgParm.top+"px";
			//i++;
			//imgAda(i);
		});
		i++;
		imgAda(i);
	};
};

/*
 * @parm id:非必须，有值：id所在的dom做局部遮罩
 * 
 * 创建遮罩
 * */
function jzts(id){
	var obj;
	if(id){
		obj = document.getElementById("jzts"+id);
	}else{
		obj = document.getElementById("jzts");
	};
	if(obj){
		return;
	}
	
	var partCoverImg = "";
	var imgsrc = ""
	
	var par,conW,conH;
	obj = document.createElement("div");
	if (id) {
		par = document.getElementById(id);
		conW = par.clientWidth;
		conH = par.clientHeight;
		var p = getStyle(par,"position");
		if(p=="static"){
			par.setAttribute("position","static");
			par.style.position = "relative";
			obj.style.position = "absolute";
		}
		obj.style.position = "absolute";
		obj.id="jzts"+id;
	} else{
		par = document.getElementsByTagName("body")[0];
		conW = window.innerWidth || par.clientWidth;
		conH = window.innerHeight || par.clientHeight;
		obj.id = "jzts";
		obj.style.position = "fixed";
	}
	obj.style.top = 0;
	obj.style.left = 0;
	obj.style.width = conW+"px";
	obj.style.height = conH+"px";
	var img = document.createElement("img");
	img.width = conW;
	img.height = conH;
	img.src = partCoverImg;
	obj.appendChild(img);
	var img2 = document.createElement("img");
	img2.width = 40;
	img2.height = 40;
	img2.src = imgsrc;
	img2.style.marginLeft = (conW-40)/2+"px";
	img2.style.marginTop = (conH-40)/2+"px";
	obj.appendChild(img2);
	par.appendChild(obj);
}

/*
 *@parm id:非必须
 * 
 * 移除遮罩
 * */
function hangge(id){
	var obj;
	if(id){
		obj = document.getElementById("jzts"+id);
		var position = obj.getAttribute("position");
		if(position){
			obj.style.position = position;
		}
	}else{
		obj = document.getElementById("jzts");
	}
	obj.parentNode.removeChild(obj);
}

//获取css中的样式的值，跟浏览器兼容无关
function getStyle(dom,attr){
	return window.getComputedStyle ? window.getComputedStyle(dom,false)[attr]:dom.currentStyle[attr];
};


/*
 * 获取css中的样式的值，跟浏览器兼容无关
 */
function getStyle2(dom,attr){
//	return window.getComputedStyle ? window.getComputedStyle(dom,false)[attr]:dom.currentStyle[attr];
	if(window.getComputedStyle){//firefox
		return window.getComputedStyle(dom,false)[attr];
	}else{
		var doc = document;
		if(doc.defaultView){//FireFox
			return doc.defaultView.getComputedStyle(dom,null)[attr];
		}else if(dom.currentStyle){//IE
			return dom.currentStyle[attr];
		}else{
			return dom.style[attr];
		}
	}
};

function getStyle3(obj,name) {
	if (obj.currentStyle)
		return obj.currentStyle[name];
	else
		return getComputedStyle(obj,null)[name];
}

//获取x，y坐标，返回对象
/*
	window.onmousedown = function(e){
		var pos = getXY(e);
		alert(pos.x +"==="+pos.y)
	}
*/
function getXY(e){
	var ev = e || window.event ;
	var x = 0 ;
	var y = 0 ;
	if(ev.pageX){
		x = ev.pageX;
		y = ev.pageY;
	}else{
		var scrLeft = 0;
		var scrTop = 0;
		//ie678---
		if(document.documentElement){
			scrLeft = document.documentElement.scrollLeft;
			scrTop = document.documentElement.scrollTop;
		}else{
			//IE9+、谷歌、
			scrLeft = document.body.scrollLeft;
			scrTop = document.body.scrollTop;
		}
		x = ev.clientX + scrLeft
		y = ev.clientY + scrTop
	}
	return {x:x,y:y}
};

//获取范围随机整数数(大于等于start，小于end)
function getRandom(start,end){
	if(end){
		return Math.floor(Math.random()*(end-start)+start);
	}else{
		return Math.floor(Math.random()* start);
	}
};

/*************************************************************************************************************/
/*
	判断是否数组
	var a = [];
	var b = {};
	Array.isArray(a);//true
	Array.isArray(b);//false
*/
if(!Array.isArray){
	Array.isArray = function(arg){
		return Object.prototype.toString.call(arg) === "[object Array]";
	};
};

//添加数组IndexOf方法，可用$.inArray(val,array,firstIndex)代替
if (!Array.prototype.indexOf){
  Array.prototype.indexOf = function(elt /*, from*/){
    var len = this.length >>> 0;

    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;

    for (; from < len; from++){
      if (from in this && this[from] === elt)
        return from;
    }
    return -1;
  };
};

//获取字符长度
//中文占2位，字母数字占一位
function getLength(str){
	var realLength = 0;
	var charCode = "";
	for(var i=0;i<str.length;i++){
		charCode = str.charCodeAt(i);
		if(charCode >=0 && charCode<=128){
			realLength += 1;
		}else{
			realLength += 2;
		}
	}
	return realLength;
}

//异步加载js，异步操作
//加载js后，执行callback方法
function loadScript(url, callback){
	var script = document.createElement ("script");
	script.type = "text/javascript";
	if (script.readyState){ //IE
		script.onreadystatechange = function(){
      if (script.readyState == "loaded" || script.readyState == "complete"){
      	script.onreadystatechange = null;
      	callback();
      }
		};
	}	else {//Others          
  	script.onload = function(){
  		callback();
  	};
  }
  script.src = url;
  document.getElementsByTagName("head")[0].appendChild(script);
}

/**
 * 图片转换成base64,不能转换本地图片
 * 
 * 不支持IE8及IE8以下的浏览器
 */
function convertImgToBase64(url, callback, outputFormat){
  var canvas = document.createElement('CANVAS'),
    ctx = canvas.getContext('2d'),
    img = new Image;
  img.crossOrigin = 'Anonymous';
  img.onload = function(){
    canvas.height = img.height;
    canvas.width = img.width;
    ctx.drawImage(img,0,0);
    var dataURL = canvas.toDataURL(outputFormat || 'image/png');
    callback.call(this, dataURL);
    canvas = null; 
  };
  img.src = url;
}


/***     图片上传预览 开始           **************************************************/
/*
 style样式
 	.preview_imgbox {width: 400px;height:400px;border: 1px solid #ccc;overflow: hidden;}
	.preview_img {max-width: 100%;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);}
 html代码：
 <div class="preview_box">
	<div class="preview_imgbox ">
		<img class="preview_img" src="img/demo.jpg"/>
	</div>
	<div class="preview_btn">
		<button class="show_preview" type="button" onclick="show_preview(this);">预览</button>
		<button class="choose_preview" type="button" onclick="choose_preview(this);">选择图片</button>
		<input type="file" class="preview_file" value="img/demo.jpg" style="width: 0;height: 0;" onchange="preview_file_change(this)"/>
	</div>
</div>
*/
//@parm:parm:若parm是字符串，则指预览的图片的id，否则为触发的按钮dom；
function show_preview(parm){
	var obj;
	if(typeof parm === "string"){
		obj = document.getElementById(parm);
	}else{
		obj = getChildNodes(parm.parentNode.parentNode.childNodes)[0];
		obj = getChildNodes(obj.childNodes)[0];
	}
	//获取要预览的图片的地址或filter
	var src = obj.src || getStyle(obj,"filer") || getStyle(obj,"FILTER");
	if(!src){
		var sty = obj.getAttribute("style");
		if(sty){
			var styArr = sty.split(";");
			for (var i = 0;i<styArr.length;i++) {
				if(styArr[i].toUpperCase().indexOf("FILTER") != -1){
					src = styArr[i];
				}
			}
		}
	}
	//alert(src);
	return src;
}

//@parm:parm:若parm是字符串，则指样式类名为 preview_flie 的文件框的id，否则为触发的按钮dom；
function choose_preview(parm){
	var obj = typeof parm === "string"?document.getElementById(parm):parm.parentNode.getElementsByTagName("input")[0];
	obj.click();
};

//监听文件框的值是否变化
function preview_file_change(parm){
	//获取文本框对应的dom
	var obj = typeof parm === "string"?document.getElementById(parm):parm;
	var par = obj.parentNode.parentNode;
	var imgbox,img,imgClassName;
	imgbox = getChildNodes(par.childNodes)[0];
	img = getChildNodes(imgbox.childNodes)[0];
	imgClassName = img.className;
	previewImage(imgbox,img,obj,imgClassName,function(){
		//alert(1);
	});
}


/* 
 * 上传的图片预览，并做自适应操纵
 * 
 * @parm:divid:预览图片的父元素的id或所对应的dom，指preview_imgbox
 * 			imgid:预览图片的id或所对应的dom，指preview_img
 * 			fileid:文件框的id或所对应的dom，指preview_file:注意文件框不能定义display="none";不然在ie上不起作用。
 * 
 * 由于IE8和IE9浏览器的问题，导致在图片上传过程中出现的不显示，无法验证的情况，请参考以下解决：
	1、如果需要使用IE系列浏览器，请换用IE10以上的现代浏览器
	2、如果需要继续使用IE8或IE9，请按以下方法设置
		a、找到 Internet选项 
			-->安全设置
			-->自定义级别
			-->ActiveX 控件和插件 
			-->启用  对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本
		b、找到 Internet选项 
			-->安全设置
			-->自定义级别
			-->ActiveX 控件和插件 
			-->启用  将文件上载到服务器时包含本地目录路径
	3、换用其他现代浏览器，如谷歌等。
	4、如果下载的浏览器有急速和IE兼容模式，请切换成急速模式，来获得更好的体验。	
 * */
function previewImage(divid,imgid,fileid,imgClassName,cb){
  var div = typeof divid === "string" ? document.getElementById(divid):divid;
  var img = typeof imgid === "string" ? document.getElementById(imgid):imgid;
  var file = typeof fileid === "string" ? document.getElementById(fileid):fileid;
  //id的最大宽度和高度	
  var MAXWIDTH  = div.clientWidth; 
  var MAXHEIGHT = div.clientHeight;
  if (file.files && file.files[0])
  {
      var reader = new FileReader();
      reader.onload = function(evt){
      	img.src = evt.target.result;
      	getImgSizes(img.src,function(w,h){
      		var rect = clacImgZoomParam(MAXWIDTH, MAXHEIGHT, w,h);
	        img.width  =  rect.width;
	        img.height =  rect.height;
	        img.style.marginTop = rect.top+'px';
	        img.style.marginLeft = rect.left+'px';
	        cb&&cb();
      	})
      }
      reader.readAsDataURL(file.files[0]);
  } else {//兼容IE
    var sFilter='filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src="';
    file.select();
		//取消选中文件上传按钮
		file.blur();
		file.parentNode.focus();
		//var src = document.selection.createRange().text;
    var src = file.value;
 		checkPhoto(src,function(w,h){
	    var rect = clacImgZoomParam(MAXWIDTH, MAXHEIGHT, w, h);
			div.innerHTML = "<div class='"+imgClassName+"' style='width:"+rect.width+"px;height:"+rect.height+"px;margin-top:"+rect.top+"px;;margin-left:"+rect.left+"px;"+sFilter+src+"\"'></div>";
			cb&&cb();
 		});
  }
}

/***  图片上传预览结束  ***************************************************************************/


/***  图片上传验证开始   **************************************************************************/
/**
*   图片验证id为file input的id,也可为该dom对象
* 
* 	本地上传图片的验证 
*		id为file 文本框的id或该file文本框对应的dom对象
* 	json{width:0,height:0,fileSize:0,compare:-1,callback:""}
* 	width为0，则不对width比较，
* 	height为0,则不对height比较.
* 	compare为1，宽高大于width,height。
* 	compare为0,宽高等于width,height。
* 	compare为-1,宽高小于width,height。
* 	fileSize为0，则不对fileSize比较
* 	callback回调函数，function(data){data为"success"时图片验证正确，否则为不正确的提示内容}
* 
* imgValid("id",{
* 	width:0,
* 	height:0,
* 	fileSize:0,
* 	compare:-1,
* 	callback:""
* })
*/
function imgValid(id,json){
	
	var dom = typeof id==="string"?document.getElementById(id):id;
	var opts = {};
	opts.width = json.width || 0;
	opts.height = json.height || 0;
	opts.compare = (json.compare || json.compare == 0)?json.compare:-1;
	opts.fileSize = json.fileSize || 0;
	var cb = opts.callback = json.callback || null;
	var btype = getBrowerType();
	if(btype == "IE9" && opts.fileSize != 0){//如果是IE9,且需要判断图片大小
		cb && cb("IE9无法获取图片大小！")
		return;
	}
	var _isimg = isImg(id);
	//优先判断是否为图片
	if(!_isimg){
		cb && cb("请选择图片!");
	}else{
		//选择的是图片
		//1、只设置了判断图片大小size
		if(opts.fileSize != 0 && opts.width == 0 && opts.height == 0){
			cb && cb(_isSize(id,opts.fileSize));
		}
		//2、只设置判断图片的尺寸
		if(opts.fileSize == 0 && (opts.width > 0 || opts.height > 0)){
			getImgDimension(id,function(w,h){
				var mark = _compareVale(w,h,opts.width,opts.height,opts.compare);
				if(opts.width > 0 && opts.height == 0){
					//只判断宽度
					cb && cb(mark.wmark?"success":"图片的宽度必须"+mark.msg+opts.width);
				}else if(opts.width == 0 && opts.height > 0){
					//只判断高度
					cb && cb(mark.hmark?"success":"图片的高度必须"+mark.msg+opts.height);
				}else if(opts.width > 0 && opts.height > 0){
					//判断宽高
					cb && cb((mark.wmark && mark.hmark)?"success":"图片的宽度必须"+mark.msg+opts.width+"，高度必须"+mark.msg+opts.height);
				}
			})
		}
		//3、同时设置了判断图片的大小和尺寸
		if(opts.fileSize != 0 && (opts.width > 0 || opts.height > 0)){
			getImgDimension(id,function(w,h){
				var smark = _isSize(id,opts.fileSize);
				var mark = _compareVale(w,h,opts.width,opts.height,opts.compare);
				if(opts.width > 0 && opts.height == 0){
					//只判断宽度
					cb && cb((mark.wmark && smark == "success")?"success":"图片的宽度必须"+mark.msg+opts.width+",图片大小必须小于"+opts.fileSize);
				}else if(opts.width == 0 && opts.height > 0){
					//只判断高度
					cb && cb((mark.hmark && smark == "success")?"success":"图片的高度必须"+mark.msg+opts.height+",图片大小必须小于"+opts.fileSize);
				}else if(opts.width > 0 && opts.height > 0){
					//判断宽高
					cb && cb((mark.wmark && mark.hmark && smark == "success")?"success":"图片的宽度必须"+mark.msg+opts.width+"，高度必须"+mark.msg+opts.height+",大小必须小于"+opts.fileSize);
				}
			})
		}
	}
	
	//nativeW、nativeH为实际的值，w、h为比较的值，value为比较关系
	function _compareVale(nativeW,nativeH,w,h,value){
		var wmark,hmark,msg;
		switch (value){
			case 0://等于
				wmark = nativeW == w?true:false; 
				hmark = nativeH == h?true:false;
				msg = "等于";
				break;
			case 1://大于
				wmark = nativeW >= w?true:false; 
				hmark = nativeH >= h?true:false;
				msg = "大于等于";
				break;
			case -1://小于
				wmark = nativeW <= w?true:false; 
				hmark = nativeH <= h?true:false;
				msg = "小于等于"
				break;
		}
		return {wmark:wmark,hmark:hmark,msg:msg};
	};
	
	function _isSize(id,size){
		var smark;
		var num = parseInt(size);
		var txt = size.replace(num,"").toUpperCase();
		var fileSize = 0;
		if(txt == "M" || txt =="MB"){
			fileSize = num * 1024 * 1024;
		}else if(txt == "KB") {
			fileSize = num * 1024 ;
		}else{
			fileSize = num;
		}
		var _size = getImgFileSize(id);
		if(_size == "-1"){
			smark = "IE9无法获取文件的大小！"
		}else if(_size > fileSize){
			smark = "图片太大了，图片最大为"+size;
		}else{
			smark = "success";
		}
		return smark;
	}
}


/**
*	判断file文本框的文件是否是图片 
*	id可为file文本框的id,也可是该file文本框的dom对象
*/
function isImg(id){
	var dom = typeof id==="string"?document.getElementById(id):id;
	var filepath = dom.value;
	if(filepath){
	//	var txt = filepath.substring(filepath.lastIndexOf("."),filepath.length).toUpperCase();
		var txtArr = filepath.split(".");
		var txt = txtArr[txtArr.length-1].toUpperCase();
		if(txt != "PNG" && txt !="JPEG" && txt !="JPG" &&txt != "BMP" && txt != "GIF"){
			//alert("图片限于bmp,png,gif,jpeg,jpg格式");
			return false;
		}
		return true;				
	}else{
		return false;
	}
};

/*
* 通过file文本框，获取上传图片的尺寸
* id是file文本框的id或该file文本框对应的dom对象
* cb为回调函数，如果有回调函数，回调函数会在300ms后执行
* */

function getImgDimension(id,cb){
	var file = typeof id==="string"?document.getElementById(id):id;
	var type = getBrowerType();
	if (file.files && file.files[0]){//IE10，IE11，FireFox，chrome
    var img = document.createElement("img");
    var reader = new FileReader();
    reader.onload = function(evt){
    	img.src = evt.target.result;
    	getImgSizes(img.src,function(w,h){
	        cb&&cb(w,h);
     	});
 		}
		reader.readAsDataURL(file.files[0]);
	}else if(type=="IE8" || type =="IE9") {//兼容IE89
    var sFilter='filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale,src="';
    file.select();
		//取消选中文件上传按钮
		file.blur();
		file.parentNode.focus();
    var src = file.value;
    checkPhoto(src,function(w,h){
    	cb&&cb(w,h);
    })
	};
};

/*
*	获取图片文件的大小（kb）
* 
* IE9无法获取，返回-1;
* 
* */
function getImgFileSize(id){
	var dom = typeof id==="string"?document.getElementById(id):id;
	var type = getBrowerType();
	var file = "";
	var fileSize = 0;
	if(type == "IE8"){
		file = dom;
		if(file){
			var filePath = file.value;
			var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
			var file = fileSystem.GetFile (filePath);
			fileSize = file.Size; 
		}
	}else if(type == "IE9"){
		/* 
			IE9 获取文件大小
		*/
		//alert("可恶的IE9，无法获取文件大小，请升级或换用其他浏览器");
		fileSize = -1;
	}else{
		file = dom.files[0];
		if(file){
			fileSize = file.size;
		}
	}
	return fileSize;
};

/*
 *	@parm: date 数据类型
 * 	@fmt: 格式化 yyyy-MM-dd hh:mm:ss
 * 
 * 	@lg: formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss');
 * */

function formatDate(date, fmt) {
	if(/(y+)/.test(fmt)) {
		fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
	}
	var o = {
		'M+': date.getMonth() + 1,
		'd+': date.getDate(),
		'H+|h+': date.getHours(),
		'm+': date.getMinutes(),
		's+': date.getSeconds()
	};

	for(var k in o) {
		if(new RegExp('('+ k +')').test(fmt)) {
			var str = o[k] + '';
			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
		}
	}
	return fmt;
}

// 左加零
function padLeftZero(str) {
	return('00' + str).substr(str.length);
}
/*** 图片上传验证结束   ***********************************************************/

/*
 * 只允许输入正整数和零
 * isIncludeZero 默认为false,包含零；为true是不包含零
 * 适合keyup、blur等事件调用
 * */
function onlyInputNumber(dom, isIncludeZero, cb){
	dom.value = dom.value.replace(/[^\d]/g,"");  //清除“数字”以外的字符  
	if(isIncludeZero){
		// 不包含零
		dom.value = dom.value.replace(/^0/g,"");  //验证第一个字符是数字而不是. 
	}
	dom.value = dom.value.replace(/^0[\d]{1,}/g,''); // 验证第一个为0，且存在第二个字符，则替换为空
	cb && cb(dom);
}


/*
 * 只允许输入正数、正小数和零 
 * 适合keyup、blur等事件调用
 * */
function onlyInputDecimal(dom, cb){
	dom.value = dom.value.replace(/[^\d.]/g,"");  			//清除“数字和.”以外的字符  
 	dom.value = dom.value.replace(/^\./g,"");  				//验证第一个字符是数字而不是. 
	dom.value = dom.value.replace(/^0[\d]{1,}/g,'');     	//验证零开头的长度大于2，则清空
	dom.value = dom.value.replace(".","$#$").replace(/\./g,"").replace("$#$","."); //只保留第一个. 清除多余的. 
}

/*
* 四舍五入保留2位小数
* */
function get2fixedRound (n) {
    let r = ''
    n = n * 100
    n = Math.round(n)
    // console.log(n)
    r = n/100
    console.log(r)
    return r
}

/*
*
* 获取随机字符串
*
* */
function getCodeString () {
    let s = 'abcdefghijkmnopqrstuvwxyz'
    let len = 25
    let sarr = s.split('').slice()
    let nStr = ''
    for (let i = 0; i < 6; i++) {
        nStr += sarr[getRandom(0, len)]
    }
    return nStr
}

/*
 * 数字字符串转换
 * lg: 24400（单位分）转换为244.00
 * lg: 240400（单位分）转换为2,404.00
 *
 * */
function filterFormatMoney (moneyNumber) {
    // let r = moneyNumber % 100
    // moneyNumber = '' + parseInt(moneyNumber / 100)
    console.log(93333.33333333334)
    moneyNumber = get2fixedRound(moneyNumber)
    let s = parseFloat((moneyNumber + '').replace(/[^\d.-]/g, '')) + ''
    console.log('s->', s)
    console.log(s.split('.'))
    let arr = s.split('.')
    let l = arr[0].split('').reverse()
    console.log('整数部分', l)
    let r = arr.length > 1 ? arr[1] : '00'
    r = r.length === 1 ? r + '0' : r
    console.log('小数部分：', r)
    let t = ''
    for (let i = 0; i < l.length; i++) {
        t += l[i] + ((i + 1) % 3 === 0 && (i + 1) !== l.length ? ',' : '')
    }
    return t.split('').reverse().join('') + '.' + r
    // return t.split('').reverse().join('') + '.' + (r > 9 ? r : '0' + r)
}
/*************************************************************************************************************/

/*******************************************************/
/*                       以上已验证                                                                      */
/*******************************************************/
/*
一、校验数字的表达式
数字：^[0-9]*$
n位的数字：^\d{n}$
至少n位的数字：^\d{n,}$
m-n位的数字：^\d{m,n}$
零和非零开头的数字：^(0|[1-9][0-9]*)$
非零开头的最多带两位小数的数字：^([1-9][0-9]*)+(.[0-9]{1,2})?$
带1-2位小数的正数或负数：^(\-)?\d+(\.\d{1,2})?$
正数、负数、和小数：^(\-|\+)?\d+(\.\d+)?$
有两位小数的正实数：^[0-9]+(\.[0-9]{2})?$
有1~3位小数的正实数：^[0-9]+(\.[0-9]{1,3})?$
非零的正整数：^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
非零的负整数：^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
非负整数：^\d+$ 或 ^[1-9]\d*|0$
非正整数：^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
非负浮点数：^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
非正浮点数：^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
正浮点数：^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
负浮点数：^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮点数：^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
校验字符的表达式
汉字：^[\u4e00-\u9fa5]{0,}$
英文和数字：^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
长度为3-20的所有字符：^.{3,20}$
由26个英文字母组成的字符串：^[A-Za-z]+$
由26个大写英文字母组成的字符串：^[A-Z]+$
由26个小写英文字母组成的字符串：^[a-z]+$
由数字和26个英文字母组成的字符串：^[A-Za-z0-9]+$
由数字、26个英文字母或者下划线组成的字符串：^\w+$ 或 ^\w{3,20}$
中文、英文、数字包括下划线：^[\u4E00-\u9FA5A-Za-z0-9_]+$
中文、英文、数字但不包括下划线等符号：^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
可以输入含有^%&',;=?$\"等字符：[^%&',;=?$\x22]+
禁止输入含有~的字符：[^~\x22]+
三、特殊需求表达式
Email地址：^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
域名：[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
InternetURL：[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
手机号码：^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX)：^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
国内电话号码(0511-4405222、021-87888822)：\d{3}-\d{8}|\d{4}-\d{7}
电话号码正则表达式（支持手机号码，3-4位区号，7-8位直播号码，1－4位分机号）: ((\d{11})|^((\d{7,8})|(\d{4}|\d{3})-(\d{7,8})|(\d{4}|\d{3})-(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1})|(\d{7,8})-(\d{4}|\d{3}|\d{2}|\d{1}))$)
身份证号(15位、18位数字)，最后一位是校验位，可能为数字或字符X：(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
帐号是否合法(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$
密码(以字母开头，长度在6~18之间，只能包含字母、数字和下划线)：^[a-zA-Z]\w{5,17}$
强密码(必须包含大小写字母和数字的组合，不能使用特殊字符，长度在8-10之间)：^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
日期格式：^\d{4}-\d{1,2}-\d{1,2}
一年的12个月(01～09和1～12)：^(0?[1-9]|1[0-2])$
一个月的31天(01～09和1～31)：^((0?[1-9])|((1|2)[0-9])|30|31)$
钱的输入格式：
有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000"：^[1-9][0-9]*$
这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式：^(0|[1-9][0-9]*)$
一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号：^(0|-?[1-9][0-9]*)$
这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧。下面我们要加的是说明可能的小数部分：^[0-9]+(.[0-9]+)?$
必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的：^[0-9]+(.[0-9]{2})?$
这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样：^[0-9]+(.[0-9]{1,2})?$
这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样：^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须：^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
备注：这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里
xml文件：^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
中文字符的正则表达式：[\u4e00-\u9fa5]
双字节字符：[^\x00-\xff] (包括汉字在内，可以用来计算字符串的长度(一个双字节字符长度计2，ASCII字符计1))
空白行的正则表达式：\n\s*\r (可以用来删除空白行)
HTML标记的正则表达式：<(\S*?)[^>]*>.*?|<.*? /> ( 首尾空白字符的正则表达式：^\s*|\s*$或(^\s*)|(\s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等)，非常有用的表达式)
腾讯QQ号：[1-9][0-9]{4,} (腾讯QQ号从10000开始)
中国邮政编码：[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)
IP地址：((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))
 * */

/*
 	"^\\d+$"　　//非负整数（正整数 + 0）
	"^[0-9]*[1-9][0-9]*$"　　//正整数
	"^((-\\d+)|(0+))$"　　//非正整数（负整数 + 0）
	"^-[0-9]*[1-9][0-9]*$"　　//负整数
	"^-?\\d+$"　　　　//整数
	"^\\d+(\\.\\d+)?$"　　//非负浮点数（正浮点数 + 0）
	"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"　　//正浮点数
	"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"　　//非正浮点数（负浮点数 + 0）
	"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"　　//负浮点数
	"^(-?\\d+)(\\.\\d+)?$"　　//浮点数
 * */

var validForm = {
	isTelNum:function(str){
		/*return /^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/.test(str);*/
		//验证是否电话号码 格式：区号-号码
		return /^(\d{3,4})-(\d{7,9})$/.test(str);
	},
	isMobileNum:function(str){
		//验证是否电话号码
		return /^1[34578]\d{9}$/.test(str);
	},
	isEmail:function (str){
		//验证是否邮箱
		return /^(?:[a-zA-Z0-9]+[_\-\+\.]?)*[a-zA-Z0-9]+@(?:([a-zA-Z0-9]+[_\-]?)*[a-zA-Z0-9]+\.)+([a-zA-Z]{2,})+$/.test(str);
	},
	isQQ:function(str){
		return /^[1-9]\d{4,14}$/.test(str);
	},
	ispostalcode:function(str){
		//验证是否为6为数的邮政编码
		return /^\d{6}$/.test(str)
	},
	isInteger:function(str){
		//验证是否整数 -0为false，01为false
		return /^\d{1}$|^-[1-9]{1}|^-?[1-9]{1}\d+$/.test(str);
	},
	isPlusInteger:function(str,flag){
		//flag为ture时，验证是否为大于等于0的整数，验证大于0的整数
		if(flag){
			return /^\d{1}$|^[1-9]{1}\d+$/.test(str);//验证为正整数和0
		}else{
			return /^[1-9]{1}$|^[1-9]{1}\d+$/.test(str);//验证为正整数			
		}
	},
	isMinusInteger:function(str){
		//flag为ture时，验证是否为小于等于0的整数，验证小于0的整数
		if(flag){
			return /^[0]{1}$|^-[1-9]{1}$|^-[1-9]{1}\d+$/.test(str);//验证为负整数和0
		}else{
			return /^-[1-9]{1}$|^-[1-9]{1}\d+$/.test(str);//验证为负整数			
		}
	},
	isFloat:function(str){
		//验证是否浮点数
		return /^(-?\d+)(.\d+)?$/.test(str) && str.indexOf(".") != "-1";
	},
	isPlusFloat:function (str,flag){
		//flag为true时，验证是否大于等于零的浮点数，否则验证是否大于零的浮点数
		if(flag){
			return /^(-?\d+)(.\d+)?$/.test(str) && str.indexOf(".") != "-1" && str *1 - 0 >= 0 ;
		}else{
			return /^(-?\d+)(.\d+)?$/.test(str) && str.indexOf(".") != "-1" && str *1 - 0 > 0;
		}
	},
	isMinusFloat:function (str,flag){
		//flag为true时，验证是否小于等于零的浮点数，否则验证是否小于零的浮点数
		if(flag){
			/^(-?\d+)(.\d+)?$/.test(str) && str.indexOf(".") != "-1" && str *1 - 0 <= 0;
		}else{
			return /^(-?\d+)(.\d+)?$/.test(str) && str.indexOf(".") != "-1" && str *1 - 0 < 0;
		}
	},
	isED:function(str){
		//验证是否英文数字的混合，不包含任何特殊字符
		return /^([0-9a-zA-Z])*$/.test(str);
	},
	isCED:function(str){
		//验证是否中英文数字的混合，不包含任何特殊字符
		return /^([0-9a-zA-Z]|[\u4E00-\u9FA5])*$/.test(str);
	}
}


//对象混入
function mix(target,source){
	var arr = [];
	var args = arr.slice.call(arguments);
	var i = 1;
	if(args.length==1){
		return target;
	};
	while((source = args[i++])){
		for(var key in source){
			if(source.hasOwnProperty(key)){
				var obj = target[key];
				if(typeof obj == "object" && obj.constructor != Array ){//不是数组，则是json
					for (var key1 in source[key]) {
						if(source[key].hasOwnProperty(key1)){
							obj[key1] = source[key][key1];
						}
					}
				}else{
					(function(str){
						target[str] = source[str];
					})(key);
				}
			}
		};
	}
	return target;
};


//IE9以下替换input[type='text']的placeholder的值，并写入文本框内
function showPlaceholder(){
	var btype = getBrowerType();
	if(btype == "IE8" || btype == "IE9" || btype == "IE7"){
		var inputs = $("input[type='text']");
		//alert(inputs.length)
		for(var i=0,len = inputs.length;i<len;i++){
			(function(n){
				var tar = inputs.eq(n);
				var text = tar.attr("placeholder");
				if(text){
					inputs.eq(n).val(text);
				}
			})(i);
		};
	};
};
//IE9以下绑定事件，input[type='text']获取焦点清空内容，拾取焦点时，判断placeholder与内容
//input[type='password']的id为password，并且有兄弟元素input[type='text'],id也为password
function inputsEvent(){
	var btype = getBrowerType();
	if(btype == "IE8" || btype == "IE9" || btype == "IE7"){
		$("input[type='text']").on("focus",function(){
			if($(this).val() == $(this).attr("placeholder")){
				$(this).val("");
			}
		}).on("blur",function(){
			if(!$(this).val()){
				$(this).val($(this).attr("placeholder"));
			}
		});
	}
};



/********************************************************************************/

/*
 * 处理ajax方式访问，当session过期时导致的不跳转登录页问题
 * 
 */
/*$.ajaxSetup({
    contentType:"application/x-www-form-urlencoded;charset=utf-8",
    complete:function(XMLHttpRequest,textStatus){
          //通过XMLHttpRequest取得响应头，sessionstatus           
          var sessionstatus=XMLHttpRequest.getResponseHeader("sessionstatus"); 
          var url = XMLHttpRequest.getResponseHeader("url");
          if(sessionstatus=="timeout"){
              //这里跳转的登录页面
        	  alert("页面过期，请重新登录");
        	  window.top.location.href=url;
       }
    }
});*/

/* 
 移动端获取本地图片
 根据 <input type="file" name="file_head" id="file_head" accept="image/*" onchange="javascript:setImagePreview();"/>
 * */
function setImagePreview() {  
    var preview, img_txt, localImag, file_head = document.getElementById("file_head"),  
    picture = file_head.value;  
    if (!picture.match(/.jpg|.gif|.png|.bmp/i)) return alert("您上传的图片格式不正确，请重新选择！"),  
    !1;  
    if (preview = document.getElementById("preview"), file_head.files && file_head.files[0]){
    	var localImag = document.getElementById("localImag");
    	var maxW = localImag.clientWidth;
    	var maxH = localImag.clientHeight;
      preview.src = window.navigator.userAgent.indexOf("Chrome") >= 1 || window.navigator.userAgent.indexOf("Safari") >= 1 ? window.webkitURL.createObjectURL(file_head.files[0]) : window.URL.createObjectURL(file_head.files[0]);
      getImgSizes(preview.src,function(w,h){
      	var rect = clacImgZoomParam( maxW, maxH, w, h );
      	preview.style.width = rect.width+'px';
      	preview.style.height = rect.height+"px";
      	preview.style.left = rect.left+"px";
      	preview.style.top = rect.top+"px";
      })
    }else {  
        file_head.select(),  
        file_head.blur(),  
        img_txt = document.selection.createRange().text,  
        localImag = document.getElementById("localImag"),  
        localImag.style.width = "63px",  
        localImag.style.height = "63px";  
        try {  
            localImag.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)",  
            localImag.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = img_txt  
        } catch(f) {  
            return alert("您上传的图片格式不正确，请重新选择！"),  
            !1  
        }  
        preview.style.display = "none",  
        document.selection.empty()  
    }  
    return document.getElementById("DivUp").style.display = "block",  
    !0  
}

function formatDate(date, fmt) {
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
  }
  var o = {
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    // 'H+': date.getHours(),
    'h+|H+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds()
  };

  for (var k in o) {
    // if (new RegExp(`(${k})`).test(fmt)) {
    if (new RegExp('('+ k +')').test(fmt)) {	
      var str = o[k] + '';
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
    }
  }
  return fmt;
};

function padLeftZero(str) {
  return ('00' + str).substr(str.length);
}